Cassidy Curtis's Color Map

Synesthetes with grapheme-color synesthesia see every letter and digit in a fixed, involuntary color: A might always be red, 7 always green. It's not imagination or association; it's a perceptual experience as automatic as seeing the shape of the letter itself.

Cassidy Curtis, an artist and synesthete, published their personal grapheme-color mapping along with detailed descriptions of how the colors interact: the first letter of a word tints the ones that follow, vowels "bleach" their neighbors toward lighter shades, consonants push neighboring colors toward their own hue. I wanted to simulate this properly: not a flat color-per-letter visualization (that just looks like a ransom note) but something that captures the blending and context-dependence.

The word 'synaesthesia' rendered with grapheme-color synesthesia simulation
The word "synaesthesia" rendered through the simulation: each letter carries its own color, with neighbors blending through Gaussian fields.

Two Schemes

The project implements two color mappings. Curtis's personal mapping assigns a specific color to each of the 26 letters and 10 digits based on their actual synesthetic experience. The second is Chromacons, a systematic mapping by Green-Armytage that distributes colors for maximum distinguishability. Both assign a base color to each grapheme, but the base color is just the starting point.

Cassidy Curtis's name rendered with their personal grapheme-color mapping
Cassidy Curtis's name rendered using their own published color associations.

Blending

In Curtis's description, the first letter of a word has outsized influence: it doesn't just color itself, it tints everything around it, with the effect falling off over distance. I modeled this with a Gaussian-weighted influence function controlled by three parameters: size (1.5; the first letter renders slightly larger), strength (0.8; 80% tinting influence at the peak), and a Gaussian width of wordLength × 0.47 × impactSize.

The width scaling means short words are dominated by their first letter. In "cat," the C tints nearly everything; in "constellation," the influence fades by the middle.

Vowels and consonants behave differently. A vowel as first letter bleaches its neighbors, pulling colors toward lighter, more washed-out versions (matching Curtis's description of vowels as "transparent" or "glassy"). Consonants tint, pushing neighboring colors toward their own hue without lightening.

Color Mixing in HUSL

Getting the blending right required moving beyond RGB interpolation. RGB mixing produces muddy results: a red letter next to a blue letter should look like purple influence, not the brownish gray you get from averaging RGB values.

I work in HUSL (Human-friendly HSL). Hue and saturation are treated as polar coordinates, mixed as vectors rather than scalars, so blending red (0°) and blue (240°) correctly produces violet instead of the green you'd get from naive hue averaging. Lightness is handled separately as a weighted average. HUSL provides perceptual uniformity: equal numerical differences correspond to roughly equal perceived differences, which matters when you're simulating a perceptual phenomenon.

Output

The final PDF (via ReportLab) positions and colors each letter based on its context: own base color, modified by first-letter influence, adjusted for vowel/consonant rules, rendered at the appropriate size.

Paragraphs acquire a flowing color pattern that's neither random nor monotonous. Words have chromatic "shapes": you can almost see the word's identity in its color signature before reading the letters. Short words are dominated by their first letter. Long words develop gradients.

Running poetry through the system is where it works best. The color patterns seem to track the rhythm in a way that's probably just pareidolia, but pleasant.

What I Learned

The difference between naive RGB mixing and HUSL-based mixing is the difference between ugly rainbow noise and something that looks like a coherent perceptual experience. Every color science project I've done since has started with choosing the right color space.

Gaussian falloff was a good default for spatial influence. I tried linear, exponential, and step functions, and Gaussian consistently produced the most natural results. Probably reflects something real about how neural fields propagate in the visual cortex.

There's no ground truth to validate against. Every synesthete's experience is different, and even Curtis's description is an approximation of something inherently subjective. The goal isn't accuracy; it's plausibility.